package com.itheima.reggie;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cache.annotation.EnableCaching;

@Slf4j
@SpringBootApplication
@ServletComponentScan
@EnableCaching  //开启spring cache 注解方式的缓存功能
public class ReggieApplication {
    public static void main(String[] args) {
        SpringApplication.run(ReggieApplication.class,args);
        log.info("项目启动成功...");
    }
}
//@SpringBootApplication：这是一个组合注解，用于标记 Spring Boot 应用的启动类。它包含了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 三个注解，用于启用自动配置、组件扫描和配置类。
//
//@Controller：用于标记控制器类，处理 HTTP 请求并返回相应的响应。
//
//@RestController：是 @Controller 的变体，它将控制器类的每个方法的返回值直接序列化为 JSON 或 XML 并返回给客户端，常用于 RESTful 服务的开发。
//
//@RequestMapping：用于将 HTTP 请求映射到相应的处理方法上。可以用于类级别或方法级别，用于指定处理的 URL 路径和请求方法。
//
//@GetMapping、@PostMapping、@PutMapping、@DeleteMapping：这些注解分别对应 HTTP 的 GET、POST、PUT、DELETE 请求，用于简化 @RequestMapping 的使用，指定不同的 HTTP 请求方法。
//
//@Autowired：自动装配依赖，通过类型或名称自动注入 Spring 容器中的 Bean。
//
//@Value：用于注入属性值，从配置文件或其他地方获取值，并赋给对应的字段或方法参数。
//
//@Configuration：用于标记配置类，定义配置信息、Bean 的创建和装配。
//
//@ComponentScan：用于指定 Spring 在哪些包下扫描组件，以便将其纳入 Spring 容器管理。
//
//@EnableAutoConfiguration：启用自动配置，根据项目的依赖自动配置 Spring 应用程序的配置信息。
//
//@Service、@Repository、@Component：用于标记服务层、持久层和普通组件类，分别表示服务、数据访问和普通的 Spring 管理的 Bean。
//
//@Transactional：用于声明事务，使被注解的方法具有事务管理能力。